home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / sharew / dfue / fax / dvi2fax / stbrief.sty < prev    next >
Encoding:
Text File  |  1992-03-11  |  14.5 KB  |  532 lines

  1. % DOCUMENT OPTION STYLE -- Released 21-MAR-1991
  2. %
  3. % adapted from LETTER DOCUMENT STYLE by Leslie Lamport
  4. %
  5. % This style has to be used as an optional style.
  6. % Tests have been made with the article.sty as the basis sty.
  7. % This style was also used together with the finder.sty.
  8. % Advice: Use the STBrief.Sty in connection with the DefUser.Sty.
  9. %         (Of course ist works without it)
  10. %
  11. % Copyright (c) 1991,1991 by Steffen Steinhaeuser
  12. % Permission to copy all or part of this work is granted, provided
  13. % that the copies are not made or distributed for resale, and that
  14. % the copyright notice and this notice are retained.
  15. %
  16. % THIS WORK IS PROVIDED ON AN "AS IS" BASIS.  THE AUTHOR PROVIDES NO
  17. % WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
  18. % INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
  19. % FOR ANY PARTICULAR PURPOSE.
  20. %
  21. % If you make any improvements, I'd like to hear about them.
  22. %
  23. % Steffen Steinh\"auser
  24. % Landwehrstr. 47
  25. % 6100 Darmstadt
  26. % Federal Republic of Germany
  27. % steinhaeuser@ddagsi5.bitnet
  28. % steffen_steinhaeuser@mz.maus.de
  29. %
  30. \def~{ }
  31. \typeout{-------------------------------------------------------}
  32. \typeout{| STBRIEF.STY V1.4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|}
  33. \typeout{| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~c'15-Feb-91 R.Th/Stone |}
  34. \typeout{-------------------------------------------------------}
  35. \typeout{}
  36. %
  37. % Die Liste der folgenden Makros sollte mit den benutzerspezifischen
  38. % Daten in eine Datei als Optionstyle in \documentstyle[]{} angegeben
  39. % werden. Diese Arbeit sollte aber, falls vorhanden, der DefUser.Sty
  40. % uebernehmen.
  41. %
  42. % Folgenden Makros sollten die eigenen Einstellungen uebergeben werden:
  43. %
  44. % \name{}
  45. % \strasse{}
  46. % \stadt{}
  47. % \signature{}
  48. % \telefon{}
  49. % \faxnummer{}
  50. % \kontonr{}
  51. % \bank{}
  52. % \bankleitzahl{}
  53. % \smallogo{}
  54. % \logo{}
  55. % \logosymbol{}
  56. % \datum{}
  57. %
  58. % Folgende Makros sollten ggf. nur angegeben werden (oder nicht)
  59. %
  60. % \fax
  61. %
  62. % Folgende Flags bzgl. eigener Einstellung setzen
  63. %
  64. % \toplogo[true]    oder \toplogofalse
  65. % \toprule[true]    oder \toprulefalse
  66. % \bottomrule[true] oder \bottomrulefalse
  67. % \bankvtrue        oder \bankv[false]
  68. % \from[true]       oder \fromfalse
  69. % \symlogotrue      oder \symlogo[false]
  70. %
  71. % [...] ist die Defaulteinstellung im STBrief.sty
  72. %
  73. % Ende der Liste
  74. %
  75.  
  76. %
  77. % Font fuer das Logo im Briefkopf
  78. %
  79. \newfont{\toplogofnt}{cmtt10 scaled 2074}
  80. %
  81. % Skip zwischen zwei Absaetzen ist so gross wie etwa eine Leerzeile
  82. % Begin des Absatzes ist nicht eingerueckt
  83. %
  84. \parskip1.5ex plus.5ex minus.5ex
  85. \parindent0pt
  86. %
  87. %    ****************************************
  88. %    *        laengen - definitionen        *
  89. %    ****************************************
  90. %
  91. % This is from documentsubstyle DINA4 for DIN A4 pagesize. GMD Z1.BN  12.06.85
  92. \oddsidemargin 0pt
  93. \evensidemargin 0pt
  94. \marginparwidth 0pt
  95. \marginparsep 0pt
  96. \marginparpush 0pt
  97.  
  98. \topmargin -1.2cm
  99. \headheight 2.5cm
  100. \headsep 1cm
  101. \footheight 0.7cm
  102. \footskip 1cm
  103. \textheight 17cm
  104. \textwidth 16.2cm
  105. %
  106. % individuelle Einstellung je nach Computertyp und Druckertreiber
  107. %
  108. \voffset-8mm
  109. %\hoffset
  110. %
  111. %    ****************************************
  112. %    *    logische flags - definitionen     *
  113. %    ****************************************
  114. %
  115. % Steuerung von etwaigen Ausgaben (oder nicht) durch neue IF-Kommandos
  116. %
  117. \newif\iftoplogo    % Ausgabe des toplogos
  118. \newif\iftoprule    % Linie oben (unter dem TopLogo)
  119. \newif\ifbottomrule % Linie unten (ueber der Bankverbindung)
  120. \newif\ifsmallfrom  % Absender ueber der Adresse
  121. \newif\iffrom       % from (-address) kann angeschaltet werden
  122. \newif\ifbankv      % Ausgabe der Bankverbindung in der Fu_zeile
  123. \newif\ifsymlogo    % Ausgabe eines Logosymbols
  124. %
  125. \newif\ifdefuser
  126. %
  127. % Defaulteinstellungen
  128. %
  129. \fromtrue
  130. \smallfromtrue
  131. \bankvfalse
  132. \toplogotrue
  133. \symlogofalse
  134. \topruletrue
  135. \bottomruletrue
  136. %
  137. %    ****************************************
  138. %    *        textmakro - definitionen      *
  139. %    ****************************************
  140. %
  141. \def\fax{ %
  142. \smallfromfalse
  143. \toprulefalse
  144. \bottomrulefalse}
  145.  
  146. \def\kontonr#1{\def\kontono{#1}}
  147. \def\kontono{}
  148.  
  149. \def\bank#1{\def\bankname{#1}}
  150. \def\bankname{}
  151.  
  152. \def\bankleitzahl#1{\def\bankzahl{#1}}
  153. \def\bankzahl{}
  154.  
  155. \def\name#1{\def\fromname{#1}\def\fromsig{#1}}
  156. \def\fromname{}
  157.  
  158. \def\strasse#1{\def\fromstreet{#1}}
  159. \def\fromstreet{}
  160.  
  161. \def\stadt#1{\def\fromcity{#1}}
  162. \def\fromcity{}
  163.  
  164. \def\signature#1{\def\fromsig{#1}}
  165. \def\fromsig{}
  166.  
  167. \def\faxnummer#1{\def\faxnum{#1}}
  168. \def\faxnum{}
  169.  
  170. \newlength{\telenumwidth}
  171. \newlength{\telewidth}
  172. \settowidth{\telewidth}{Telefon}
  173.  
  174. \def\telefon#1{\def\telephonenum{#1}\settowidth{\telenumwidth}{#1}}
  175. \def\telephonenum{}
  176.  
  177. \def\smallogo#1{\def\sfromlogo{#1}}
  178. \def\sfromlogo{}
  179.  
  180. \def\logo#1{\def\fromlogo{#1}\def\sfromlogo{#1}}
  181. \def\fromlogo{}
  182.  
  183. \def\logosymbol#1{\def\symlogo{#1} %
  184.     \iftoplogo\else\def\fromlogo{#1}\fi %
  185.     \ifx\@empty\symlogo\symlogofalse\else\symlogotrue\fi}
  186.  
  187. \def\datum#1{\def\date{#1}}
  188. \def\date{\today}
  189. %
  190. %    ****************************************
  191. %    *  stbrief environment - definitionen   *
  192. %    ****************************************
  193. %
  194. \def\opening#1{
  195.  \thispagestyle{firstpage}
  196.  {\hbox{} \par}
  197.  \vspace*{5mm}  % \vfill
  198.  \par #1\par\nobreak
  199. }
  200.  
  201. \long\def\closing#1{\par\nobreak\vspace{\parskip}
  202.   \stopbreaks
  203.   \noindent
  204.   \parbox{0.5\textwidth}{\raggedright
  205.        \ignorespaces #1\\[12mm]
  206.        \ifx\@empty\fromsig\else
  207.        \fromsig \fi\strut}\vfill
  208.    \par}
  209.  
  210. \def\cc#1{\par\noindent
  211. \parbox[t]{\textwidth}{\@hangfrom{\rm  \ccname }\ignorespaces #1\strut}\par}
  212.  
  213. \def\encl#1{\par\noindent
  214. \parbox[t]{\textwidth}{\@hangfrom{\rm  \enclname }\ignorespaces #1\strut}\par}
  215.  
  216. \def\stopletter{}
  217. %
  218. % Labels
  219. %
  220. \def\returnaddress{}
  221. \newcount\labelcount
  222. %
  223. % The following \startlabels command sets things up for producing
  224. % labels in two columns of five 2" X 4-1/4" labels each, suitable
  225. % for reproducing onto Avery brand number 5352 address labels.
  226. %
  227. \def\startlabels{\labelcount=0 \baselineskip=0pt \lineskip=0pt
  228. \pagestyle{empty}
  229. \let\@texttop=\relax
  230. \topmargin -50pt
  231. \headsep 0pt
  232. \oddsidemargin -35pt
  233. \evensidemargin -35pt
  234. \textheight 10in
  235. \@colht\textheight  \@colroom\textheight \vsize\textheight
  236. \textwidth 550pt
  237. \columnsep 25pt
  238. \xpt
  239. \baselineskip=0pt
  240. \lineskip=0pt
  241. \boxmaxdepth=0pt
  242. \twocolumn\relax}
  243.  
  244. \def\mlabel#1#2{\setbox0\vbox{\parbox[b]{3.6in}{\strut\ignorespaces #2}}
  245.          \vbox to 2in{\vss \box0 \vss}}
  246. %
  247. %    ****************************************
  248. %    *     THE GENERIC STBRIEF COMMANDS     *
  249. %    ****************************************
  250. %
  251. \long\def\letter#1{\newpage
  252.   \c@page\@ne
  253.   \interlinepenalty=200 % smaller than the TeXbook value
  254.   \@processto{#1}}
  255.  
  256. \def\endletter{\stopletter\@@par\pagebreak \@@par
  257.   \if@filesw
  258.     \begingroup
  259.       \def\protect{\string}
  260.       \let\\=\relax
  261.       \def\protect##1{\string##1\space}
  262.       \immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname
  263.            \\\toaddress}}
  264.     \endgroup
  265.   \fi}
  266.  
  267. \long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty
  268.     \else \@yproc #1@@@\fi}
  269. \long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
  270. \long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
  271.  
  272. \def\stopbreaks{\interlinepenalty \@M
  273.    \def\par{\@@par\nobreak}\let\\=\@nobreakcr
  274.    \let\vspace\@nobreakvspace}
  275.  
  276. \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
  277.  
  278. \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
  279.                \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
  280.  
  281. \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
  282.  
  283. \def\startbreaks{\let\\=\@normalcr
  284.    \interlinepenalty 200\def\par{\@@par\penalty 200}}
  285.  
  286. \def\document{\endgroup
  287.   \@colht\textheight  \@colroom\textheight \vsize\textheight
  288.    \columnwidth\textwidth \@clubpenalty\clubpenalty
  289.    \if@twocolumn \advance\columnwidth -\columnsep
  290.       \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
  291.    \fi
  292.   \hsize\columnwidth \linewidth\hsize
  293.   \begingroup\@floatplacement\@dblfloatplacement\endgroup
  294.   \if@filesw \immediate\openout\@mainaux=\jobname.aux
  295.    \immediate\write\@mainaux{\string\startlabels\string\@startlabels}\fi
  296.   \def\do##1{\let ##1\@notprerr}
  297.   \@preamblecmds
  298.   \let\do\noexpand
  299.   \@normalsize\everypar{}
  300. %
  301. % Sollten noch keine benutzerspezifischen Daten definiert sein,
  302. % gibt es jetzt die Moegloichkeit dazu
  303. %
  304. \ifdefuser\else\defuser\fi
  305. }
  306.  
  307. \def\enddocument{\@checkend{document}\newpage\begingroup
  308. \if@filesw \immediate\closeout\@mainaux
  309. \makeatletter\input \jobname.aux\clearpage
  310. \fi\endgroup\deadcycles\z@\@@end}
  311.  
  312. \def\makelabels{\@fileswtrue}
  313.  
  314. \def\@startlabels{}
  315. %
  316. %    ****************************************
  317. %    *            PAGE STYLES               *
  318. %    ****************************************
  319. %
  320. \gdef\@knickpoint{%
  321. \vbox to0pt{%
  322.  \vskip1.8cm%
  323.  \noindent\hbox to0pt{\hskip-1.8cm \null\vrule height.3pt width.5cm \hss}%
  324. \vss}%
  325. }
  326.  
  327. \def\ps@firstpage{ %
  328. \headheight 7.5cm
  329. \def\@smallfrom{%
  330.       \hbox{%
  331.         \ifx\@empty\sfromlogo %
  332.          \tiny \fromname\  $\cdot$ \fromstreet\ $\cdot$ \fromcity %
  333.         \else %
  334.          \tiny \sfromlogo\ $\cdot$ \fromstreet\ $\cdot$ \fromcity %
  335.         \fi
  336.       }
  337.    }
  338.  
  339. \def\@from{%
  340.     \parbox[t]{0.33\textwidth}{\raggedright
  341.                                         \vspace{8mm} %
  342.                                         \iffrom %
  343.                                           \scriptsize     %
  344.                                           \fromname \\    %
  345.                                           \fromstreet \\  %
  346.                       \fromcity \\    %
  347.                               \parbox[t]{\telewidth}{Telefon} %
  348.                                           \parbox[t]{\telenumwidth}{\telephonenum} \\
  349.                                           \ifx\@empty\faxnum \else%
  350.                                           \parbox[t]{\telewidth}{Telefax} %
  351.                                           \parbox[t]{\telenumwidth}{\faxnum} \\ \fi%
  352.                                           \normalsize    %
  353.                     \else             %
  354.                                           \par \vspace{5mm} \par %
  355.                                         \fi
  356.                                         \vspace{12mm}
  357.                                         \date}}
  358.  
  359. \gdef\@firsthed{
  360.         \vbox {
  361.       \iftoplogo%
  362.           \ifx\@empty\fromlogo%
  363.         \parbox{\textwidth}{\Huge \fromname}%
  364.           \else %
  365.             \ifsymlogo%
  366.           \parbox{\textwidth}{\symlogo}%
  367.             \else %
  368.           {\toplogofnt \fromlogo}%
  369.             \fi%
  370.           \fi%
  371.       \fi%
  372.           \vskip 3mm
  373.           \iftoprule %
  374.            \rule[0pt]{\textwidth}{1pt} %
  375.       \fi%
  376.         }
  377. }
  378.  
  379. \def\@firsthef{ %
  380.    \hbox to0pt{\@knickpoint\hss}%
  381.    \vbox to \headheight{ %
  382.       \@firsthed
  383.       \vspace*{21mm}\par
  384.       \vbox{
  385.       \parbox[t]{.6\textwidth}{
  386.             \vspace{8mm}
  387.         \ifsmallfrom %
  388.               \raggedright \@smallfrom %
  389.               \vskip 1mm      %
  390.               \hrule          %
  391.         \fi
  392.             \vskip 5mm
  393.             \hspace*{.05\textwidth}
  394.             \parbox[t]{.5\textwidth}{
  395.         \ifx\toname\@empty
  396.         \ifx\toaddress\@empty
  397.             \vbox{.} \vspace{3cm} \vbox{.}
  398.         \fi
  399.         \else
  400.         \toname \\ \toaddress
  401.         \fi
  402.         }
  403.       }
  404.       \hfil
  405.       \@from
  406.     }
  407.     \vspace*{10mm}  % \vfill
  408.     }
  409.  }
  410.  
  411. \def\@oddhead{%
  412.         \kern-9pt %
  413.         \@firsthef
  414. }
  415.  
  416. \def\@oddfoot{%
  417.     \kern-3pt \vbox{
  418.        \ifbottomrule %
  419.          \rule[0pt]{\textwidth}{1pt} %
  420.          \ifbankv %
  421.           \scriptsize Bankverbindung:
  422.           \bankname\ $\cdot$ BLZ.\bankzahl\ $\cdot$ Kto.\kontono %
  423.               \hfill %
  424.          \fi %
  425.         \fi
  426.     }
  427. }
  428.  
  429. \def\@evenfoot{
  430.      \iftoprule %
  431.         \vbox{\rule[0pt]{\textwidth}{1pt} } %
  432.      \fi
  433.    }
  434. \global\textheight 21.7cm
  435. \global\@colht\textheight
  436. \global\@colroom\textheight
  437. \global\vsize\textheight
  438. }
  439.  
  440. \def\ps@plain{ %
  441. \def\@plainhef{ %
  442.    \vbox to \headheight {
  443.      \@firsthed \vskip 10mm
  444.      \vbox{\rm \hfil Seite \thepage }
  445.    \vfill}
  446. }
  447.  
  448. \def\@oddhead{
  449.  \kern-9pt %
  450.  \@plainhef
  451. }
  452.  
  453. \def\@oddfoot{
  454.    \vbox{
  455.          \ifbottomrule\rule[0pt]{\textwidth}{1pt}\fi}
  456.   }
  457. \let\@evenhead\@oddhead
  458. \def\@evenfoot{
  459.    \vbox{
  460.         \iftoprule\rule[0pt]{\textwidth}{1pt}\fi
  461.    }
  462. }
  463. }
  464.  
  465. \let\anlage\encl
  466. \let\kopie\cc
  467. %
  468. % stbrief default preparation
  469. %
  470. \ps@plain                    % 'plain' page style
  471. \pagenumbering{arabic}       % Arabic page numbers
  472. \onecolumn                   % Single-column
  473. \@fileswfalse                % Inhibits writing of .AUX file.
  474. %
  475. %    ****************************************
  476. %    *           DEFINE USER                *
  477. %    ****************************************
  478. %
  479. \gdef\defuser{ %
  480. \openin1 defuser.sty
  481. \ifeof1
  482.   \closein1\relax
  483.   \typeout{}
  484.   \typeout{TeX kann den DefUser.Sty nicht finden. Sie muessen die von Hand}
  485.   \typeout{erstellte Datei mit den benutzerspezifischen Daten in die Liste}
  486.   \typeout{der Optionen im \string\documentstyle~ eintragen. Sie sollten versuchen}
  487.   \typeout{sich den DefUser.Sty zu besorgen, da er ihnen viel Arbeit erspart}
  488.   \typeout{und immer ueber den neusten Stand des STBrief.Sty informiert ist.}
  489.   \typeout{}
  490.   \typeout{Da Ihr Brief ohne die benutzerspezifischen Daten nicht auskommt,}
  491.   \typeout{wird an dieser Stelle der TeXlauf abgebrochen.}
  492.   \typeout{}
  493.   \typein[\return]{Druecken Sie <RETURN> !}
  494.   \end{document}
  495. \else
  496. \closein1\relax
  497. \def\ja{j}
  498. \def\Ja{J}
  499. \typeout{}
  500. \typeout{Achtung:}
  501. \typeout{}
  502. \typeout{Wie sie wissen, benoetigt man fuer den STBrief.Sty eine Datei mit}
  503. \typeout{benutzerspezifischen Daten. Hier gibt es nun die Moeglichkeit}
  504. \typeout{diese Datei interaktiv anzulegen und gleich zu verwenden. Sollten}
  505. \typeout{jedoch eine solche Datei schon existieren, so geben sie einfach}
  506. \typeout{deren Namen ein.}
  507. \typeout{}
  508. \typein[\filename]{Bitte den Namen des DefUser-Files eingeben (ohne Extension):}
  509. \typeout{}
  510. \typeout{Merken Sie sich den Dateinamen \filename[.sty], damit Sie ihn}
  511. \typeout{demnaechst im \string\documentstyle~ als Option angeben koennen.}
  512. \openin2\filename.sty
  513. \ifeof2
  514.     \closein2\relax
  515.     \typeout{}
  516.     \typeout{Keine Datei namens \filename.sty~ gefunden.}
  517.     \typeout{Der DefUser.Sty wird Ihnen helfen eine zu erstellen.}
  518.     \input{defuser.sty}
  519. \else
  520.     \closein2\relax
  521.     \typeout{}
  522.     \typein[\antwort]{Soll die Datei \filename.sty~ geaendert werden (J/N)? [N]}
  523.     \if\antwort\ja\let\antwort\Ja\fi
  524.     \if\antwort\Ja
  525.       \input{defuser.sty}
  526.     \else
  527.       \input{\filename.sty}
  528.     \fi
  529. \fi
  530. \fi
  531. }
  532.